package com.bootdo.app.vo.wx;

import lombok.Data;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

/**
 * @auther: 作者: Along
 * @description: 类说明
 * @Date: created in 2020/12/10 16:05
 */
@Data
@XmlRootElement(name = "xml")
@XmlAccessorType(value = XmlAccessType.FIELD)
public class TransferMoneyResponse {

    /**
     * 返回状态码 （必需）  SUCCESS / FAIL  此字段是通信标识，非交易标识，交易是否成功需要查看 result_code 来判断
     */
    @XmlElement(name = "return_code")
    private String return_code;

    /**
     * 返回信息 (非必需)
     */
    @XmlElement(name = "return_msg")
    private String return_msg;


    // 以下字段在return_code为SUCCESS的时候有返回
    /**
     * 商户appid （必需）
     */
    @XmlElement(name = "mch_appid")
    private String mch_appid;

    /**
     * 商户号 （必需）
     */
    @XmlElement(name = "mchid")
    private String mchid;

    /**
     * 设备号 (非必须) （微信支付分配的终端设备号）
     */
    @XmlElement(name = "device_info")
    private String device_info;

    /**
     * 随机字符串 （必需）
     */
    @XmlElement(name = "nonce_str")
    private String nonce_str;

    /**
     * 业务结果 （必需） SUCCESS/FAIL，
     * 注意：当状态为FAIL时，存在业务结果未明确的情况。
     * 如果状态为FAIL，请务必关注错误代码（err_code字段），通过查询接口确认此次付款的结果。
     */
    @XmlElement(name = "result_code")
    private String result_code;

    /**
     * 错误代码 (非必须)
     * 注意：出现未明确的错误码时（SYSTEMERROR等），请务必用原商户订单号重试，或通过查询接口确认此次付款的结果。
     */
    @XmlElement(name = "err_code")
    private String err_code;

    /**
     * 错误代码描述 （非必须）
     */
    @XmlElement(name = "err_code_des")
    private String err_code_des;

    // 以下字段在return_code 和result_code都为SUCCESS的时候有返回
    /**
     * 商户订单号 (必需) 商户订单号，需保持历史全局唯一性(只能是字母或者数字，不能包含有其它字符)
     */
    @XmlElement(name = "partner_trade_no")
    private String partner_trade_no;

    /**
     * 微信付款单号 (必需) 企业付款成功，返回的微信付款单号
     */
    @XmlElement(name = "payment_no")
    private String payment_no;

    /**
     * 付款成功时间
     */
    @XmlElement(name = "payment_time")
    private String payment_time;

}
